#include "wx/wxprec.h"

#if wxUSE_STATBMP

#include "wx/statbmp.h"
#include "gdk/gdk.h"
#include "gtk/gtk.h"

IMPLEMENT_DYNAMIC_CLASS( wxStaticBitmap, wxControl )

wxStaticBitmap::wxStaticBitmap( void ) {
}

wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
                                const wxPoint &pos, const wxSize &size,
                                long style, const wxString &name ) {
  Create( parent, id, bitmap, pos, size, style, name );
}

bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
                             const wxPoint &pos, const wxSize &size,
                             long style, const wxString &name ) {
  m_needParent = TRUE;
  if( !PreCreation( parent, pos, size ) ||
      !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ) ) {
    wxFAIL_MSG( wxT( "wxStaticBitmap creation failed" ) );
    return false;
  }
  m_bitmap = bitmap;
  m_widget = gtk_image_new();
  if( bitmap.Ok() ) {
    SetBitmap( bitmap );
  }
  PostCreation( size );
  m_parent->DoAddChild( this );
  return true;
}

void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap ) {
  m_bitmap = bitmap;
  if( m_bitmap.Ok() ) {
    gtk_image_set_from_pixbuf( GTK_IMAGE( m_widget ), m_bitmap.GetPixbuf() );
    InvalidateBestSize();
    SetSize( GetBestSize() );
  }
}

wxVisualAttributes
wxStaticBitmap::GetClassDefaultAttributes( wxWindowVariant ( variant ) ) {
  return GetDefaultAttributesFromGTKWidget( gtk_label_new );
}

#endif
